/**
 * Created by zhangguoyu on 16/4/30.
 */

module.exports = function (res) {
  this._response = res;
  this._code = -1;
  this._msg = '';
  this._result = undefined;
  
  this.ERROR_CODE = 0;
  this.OK_CODE = 1;
  
  var self = this;
  
  return {
    code: function (code) {
      self._code = code;
      return this;
    },
    error: function (msg) {
      return this.code(self.ERROR_CODE).message(msg);
    },
    ok: function () {
      var msg = 'ok';
      if (arguments.length) {
        msg = arguments[0];
      }
      return this.code(self.OK_CODE).message(msg);
    },
    message: function (msg) {
      self._msg = msg;
      return this;
    },
    result: function (resObject) {
      self._result = resObject;
      return this;
    },
    send: function () {
      var o = {
        code: self._code,
        msg: self._msg
      };
      if (arguments.length) {
        self._result = arguments[0];
      }
      if (self._result !== undefined) {
        o.result = self._result;
      }
      self._response.json(o)
    }
  }
};
